package cn.tedu.baking.controller;

import cn.tedu.baking.response.JsonResult;
import com.sun.xml.internal.ws.encoding.xml.XMLMessage;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

/**
 * 上传的模块功能
 */
@RestController
@RequestMapping("/v1/")
public class UploadController {
    private String dirPath="D:/file";
    //MultipartFile 该工具 可以用来接收传递过来的文件资源(二进制)
    //可以帮我们转换为具体的文件
    @PostMapping("upload")
    public JsonResult upload(MultipartFile file) throws IOException {
        //通过前端发送上传图片的请求
        //需要存储上传的图片到服务器中
        //1.修改接收到的图片的名字
        String orlFilename = file.getOriginalFilename();//获取上传时的原始文件名称
        //截取字符串  xxx.jpg
        int index = orlFilename.lastIndexOf('.');
        String suffix = orlFilename.substring(index);
        System.out.println("后缀是:"+ suffix);
        String newFileName = UUID.randomUUID() + suffix;
        System.out.println("新的文件名称:"+newFileName);
        //2.按照年月日的路径来存放用户上传的图片 : D:/file/2024/01/07/xxx.jpg
        //日期格式化对象,可以将传入的Date类型的日期进行格式转换
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("/yyyy/MM/dd/");
        String datePath = simpleDateFormat.format(new Date());//获取日期格式的字符串
        File dirFile = new File(dirPath + datePath);// D:/file/2024/01/07/
        if(dirFile.exists()){//判断当前文件对象的路径是否真实存在盘符中
            System.out.println("存在,无需创建");
        }else {
            dirFile.mkdirs();//根据当前文件对象的路径 创建出来这些文件夹
        }
        //将文件信息传输到指定的路径中
        //创建一个文件对象  文件对象的路径:D:/file/2024/01/08/x.jpg
        file.transferTo(new File(dirPath + datePath+ newFileName));
        return JsonResult.ok(datePath+ newFileName);//返回日期+文件名路径,后续还需要有删除操作
        //测试: 重启服务端,登录后到个人中心页面,点击图片上传+号,选择图片确定
        // 查看本地的D:/file/2024/01/07/xxx.jpg  是否根据这个路径找到具体的文件
    }

    @PostMapping("remove")
    public JsonResult remove(String url){
        //url  : /2024/01/08/x.jpg
       new File( dirPath + url).delete();//删除指定路径下的文件对象
        return  JsonResult.ok();
    }

}
